import Cookies from 'js-cookie';

// Token存储的Cookie键名（与项目前缀保持一致）
const TOKEN_KEY = 'react16_admin_token';

/**
 * 设置Token到Cookie
 * @param {string} token - 登录令牌
 * @param {number} expiresDays - 过期天数（默认7天）
 */
export const setToken = (token, expiresDays = 7) => {
  if (!token || typeof token !== 'string') {
    return null;
  }

  // 配置Cookie参数（适配项目部署环境）
  const cookieOptions = {
    expires: expiresDays, // 过期时间（天）
    path: '/', // 全站有效（与路由匹配）
    // 生产环境启用安全配置（根据实际域名调整）
    ...(process.env.NODE_ENV === 'production' && {
      secure: false, // 仅HTTPS传输
      sameSite: 'strict', // 防止CSRF攻击
      // domain: '.yourdomain.com' // 若有跨域需求，添加域名
    }),
  };

  Cookies.set(TOKEN_KEY, token, cookieOptions);
};

/**
 * 从Cookie获取Token
 * @returns {string|null} - 令牌字符串或null
 */
export const getToken = () => {
  // 自动处理解码和空值判断
  return Cookies.get(TOKEN_KEY) || null;
};

/**
 * 从Cookie删除Token（退出登录）
 */
export const removeToken = () => {
  // 删除时需与设置时的path/domain保持一致
  const deleteOptions = {
    path: '/',
    ...(process.env.NODE_ENV === 'production' &&
      {
        // domain: '.yourdomain.com' // 与设置时的domain一致
      }),
  };

  Cookies.remove(TOKEN_KEY, deleteOptions);
};

/**
 * 判断用户是否已登录
 * @returns {boolean} - 登录状态
 */
export const isLogin = () => {
  const token = getToken();
  return !!token && token.trim() !== '';
};
